Applying Attestation to the Border Gateway Protocol (BGP)

ABSTRACT

In one embodiment, a method by an apparatus of a Border Gateway Protocol (BGP) network includes accessing an attestation token for the apparatus. The method further includes encoding the attestation token in a BGP signaling message. The method further includes sending the BGP signaling message with the encoded attestation token to a second apparatus of the BGP network.

PRIORITY

This application claims the benefit, under 35 U.S.C. § 119(e), of U.S.Provisional Patent Application No. 62/829,486, filed 4 Apr. 2019, whichis incorporated herein by reference in its entirety.

TECHNICAL FIELD

The present disclosure relates generally to data communications, andmore particularly to applying attestation to the Border Gateway Protocol(BGP) routing protocol.

BACKGROUND

In a network, information may be transmitted through one or more networknodes before arriving at its destination. Certain network nodes may bebecome compromised. For example, an attacker may gain control of a nodeand direct traffic from the node to the attacker's computing device. Inthe event the attacker gains access to one or more network nodes, theattacker may tamper with the sensitive information transmitted throughthe compromised node.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a network utilizing the Border Gateway Protocol (BOP)routing protocol, according to certain embodiments.

FIGS. 2A-2D illustrate example BGP signaling messages, according tocertain embodiments.

FIGS. 3A and 3B illustrate example BOP signaling messages with addedattestation, according to certain embodiments.

FIG. 4 illustrates an example method for applying attestation to BGP,according to certain embodiments.

FIG. 5 illustrates an example computer system, according to certainembodiments.

DESCRIPTION OF EXAMPLE EMBODIMENTS Overview

In a communications network, information may be transmitted through oneor more network nodes before arriving at its destination. In somenetworks, the Border Gateway Protocol (BGP) routing protocol is utilizedbetween certain network nodes to transmit information. Morespecifically, BGP is used to exchange routing and reachabilityinformation among autonomous systems (AS) on a network such as theInternet.

In some situations, certain network nodes in a BGP network may becomecompromised. For example, an attacker may gain control of a node anddirect traffic from the node to the attacker's computing device. In theevent the attacker gains access to one or more network nodes, theattacker may tamper with the sensitive information transmitted throughthe compromised node.

Example Embodiments

To address these and other problems in networks that utilize BGP,embodiments of the disclosure provide apparatuses, systems, methods, andcomputer-readable media for applying attestation to BGP. In someembodiments, the attestation that is applied to BGP includes a tokenwhich may allow external entities to validate freshness of asserted databased on the state of internal counters within a Trusted Platform Module(TPM). The token or signed measurement may be referred as a canary stamp(or simply “Stamp”) since a token or signed measurement may provideauthenticity similar to a stamp and may be used as an early indicator oftrouble. In some embodiments, the attestation is applied to a BGPkeepalive message by appending the canary stamp to the end of a typicalBGP keepalive message. In some embodiments, the attestation is appliedto a BGP update message by appending the canary stamp to a new attributeof a BGP update message. In both cases, the canary stamps may betransmitted to other network entities where they may be analyzed inorder to determine whether the attesting node has been compromised.

The advantages and features of certain embodiments are discussed in moredetail below in reference to FIGS. 1-5. FIG. 1 illustrates a networkutilizing the Border Gateway Protocol (BGP) routing protocol. FIGS.2A-2D illustrate example BGP signaling messages. FIGS. 3A and 3Billustrate example BGP signaling messages with added attestation. FIG. 4illustrates an example method for applying attestation to BGP. FIG. 5illustrates an example computer system.

FIG. 1 illustrates a network 100 that utilizes BGP, according to certainembodiments. Network 100 includes multiple network elements 120 (e.g.,120 a-h) and multiple routing domains or autonomous systems (e.g., ASes110 a-d). ASes 110 a-d are interconnected by edge network nodes 120(e.g., 120 a-c and 120 f-g). Network elements 120 may be switches,routers, or any other appropriate network elements. ASes 110 areillustratively interconnected by edge network elements 120 a-c and 120f-g via point-to-point communication links 140, such as frame relaylinks, asynchronous transfer mode links or other serial links. The edgenetwork elements 120 a-c of AS 110 a are illustratively coupled tonetwork elements 120 d-e via subnetworks, such as local area networks130. Communication among network elements 120 is typically effected byexchanging discrete data packets or messages in accordance withpredefined protocols, such as the Transmission Control Protocol/InternetProtocol (TCP/IP). It will be understood to those skilled in the artthat other protocols, such as the Internet Packet Exchange (IPX)protocol, may be advantageously used with the disclosed embodiments.

Routing decisions within each AS 110 may rely on a predetermined“interior” gateway routing protocol (IGP). An example of an IGP is aconventional link-state protocol, such as the Open Shortest Path First(OSPF) or Intermediate-System-to-Intermediate-System (ISIS) protocol. Inaddition, routing information may be exchanged among the ASes 110 a-dusing an “exterior” gateway protocol (EGP), such as BGP. To that end,the BGP-enabled network elements 120 (i.e., “BGP speakers”) exchangerouting information with other BGP speakers that are not in the same AS110 (e.g., 120 f-h) using an external form of BGP (eBGP), whileBGP-enabled network elements 120 a-c within the same AS 110 exchangerouting information with each other using an internal form of BGP(iBGP). BOP-enabled network elements 120 communicate information toother BGP-enabled network elements 120 using a BGP signaling message150. BOP signaling messages 150 may include an attestation 160, asdescribed in more detail below.

In general, BGP-enabled network elements 120 (e.g., network elements 120a-c and 120 f-h in FIG. 1) apply attestation 160 to signaling messages150 that are transmitted to other BOP-enabled network elements 120(e.g., external BGP peers). Attestation 160 provides verifiable evidenceof the trustworthiness of network elements 120, thereby enablingexternal devices to ascertain if any network element 120 has beencompromised (e.g., hacked or captured). This increases the security ofnetwork 100 and reduces or eliminates the possibility of sensitiveinformation being stolen.

FIGS. 2A-2D illustrate typical BGP signaling messages 150 a-d, accordingto certain embodiments. In FIG. 2A, a BGP open message 150 a isillustrated. BGP open message 150 a has a type code of “I”. BGP openmessage 150 a is the first message that is sent by both peers (e.g.,network elements 120 c and 120 f) after a connection (e.g., a TCPconnection) has been established. If BGP open message 150 a isacceptable to a network element 120, a BGP keepalive message 150 d issent to confirm the BGP open message 150 a. BGP keepalive message 150 d,BGP update message 150 b, and BGP notification message 150 c can beexchanged only after BGP open message 150 a has been confirmed and theBGP connection had been established. As illustrated in FIG. 2A, BGP openmessage 150 a includes the following fields: a marker field (16 octets),a length field (2 octets), a type field (1 octet), a version field (1octet), an AS field (2 octets), a hold time field (2 octets), a BGP IDfield (4 octets), an optional length field (octet), and an optionalfield (7 octets).

In FIG. 2B, a BGP update message 150 b is illustrated. BGP updatemessage 150 b has a type code of “2”. BGP update message 150 b isexchanged between network elements 120 to communicate incrementalchanges in a routing table. BGP update message 150 b includes thefollowing fields: a marker field (16 octets), a length field (2 octets),a type field (1 octet), an unfeasible routes length field (2 octets), awithdrawn routes field (variable), an attribute length field (2 octets),an attributes field (variable), and NLRI field (variable). As discussedin more detail below in reference to FIG. 3A, the attributes field ofBGP update message 150 b may be used to transport attestation 160 incertain embodiments.

In FIG. 2C, a BGP notification message 150 c is illustrated. BGPnotification message 150 c has a type code of “3”. BGP notificationmessage 150 c is sent when an error or a special condition is detected.The BGP connection is terminated immediately when a BGP notificationmessage 150 c is sent. BGP notification message 150 c includes thefollowing fields: a marker field (16 octets), a length field (2 octets),a type field (I octet), an error code field (1 octet), an error sub-codefield (1 octet), and a diagnostic data field (variable).

In FIG. 2D, a BGP keepalive message 150 d is illustrated. BGP keepalivemessage 150 d has a type code of “4”. BGP keepalive message 150 dmaintains the BGP connection between two BGP peers. BOP keepalivemessage 150 d is exchanged on a period of one-third of the hold time,but not less than one second (60 seconds by default). BGP keepalivemessage 150 d includes the following fields: a marker field (16 octet),a length field (2 octets), and a type field (1 octet). As discussed inmore detail below in reference to FIG. 3B, BGP keepalive message 150 dmay include additional fields that may be used to transport attestation160 in certain embodiments.

FIGS. 3A and 3B illustrate novel BGP signaling messages 150 that may beused to apply attestation to BGP. FIG. 3A illustrates a BGP updatemessage 150 b with added attestation 160, and FIG. 3B illustrates a BOPkeepalive message 150 d with added attestation 160, according to certainembodiments. As illustrated in FIG. 3A, attestation 160 may be added toa typical BGP update message 150 b using the attributes field of BGPupdate message 150 b. As illustrated in FIG. 3B, attestation 160 may beadded to a typical BGP keepalive message 150 d by appending attestation160 to the end of a BGP keepalive message 150 d.

In general, BGP update message 150 b with added attestation 160 and BGPkeepalive message 150 d with added attestation 160 may be utilized bynetwork elements 120 (e.g., BGP-enabled network elements 120 a-c) toapply attestation to BGP. In some embodiments, the attestation 160 thatis applied to BGP includes a token which may allow external entities tovalidate freshness of asserted data based on the state of internalcounters within a TPM. In some embodiments, the attestation is providedby a TPM. Dedicated crypto-processors, such as a TPM, may takemeasurements necessary to attest the identity of a device and runningbinaries on the device. These measurements may include evidence that thedevice is in a known safe state. However, a receiver must be able tocertify the evidence as fresh. Without a guarantee of freshness, anattacker may have an opening to inject previously recorded measurements,asserting what is replayed as being current. When sensitive informationis being transmitted to a destination device through a network, networktraffic should not be sent through comprised network nodes (e.g., hackedor captured nodes) to prevent leakage of or tampering with the sensitiveinformation. However, traditional protections and link encryption areineffectual to ensure that each router in the end to end path is notcompromised specially when an attacker gains root access to a device viasome exploit.

In particular embodiments, a first network node (e.g., a network element120 acting as a BGP speaker such as edge network element 120 f) may beconfigured to communicate using the BGP routing protocol. The firstnetwork node may receive a BGP signaling message (e.g., a BGP updatemessage 150 b or a BGP keepalive message 150 d) that includes anattestation token 160 from a second network node (e.g., edge networkelement 120 a). The attestation token 160 may be for proving that thesecond network node is in a known safe state. The first network node maydetermine that the attestation token is valid for the second networknode at a current time. The first network node may compute a trust levelfor the second network node based at least on the received attestationtoken 160. The trust level for the second network node may be used bythe network nodes in the network to compute a routing table of thenetwork. For example, if an attestation token 160 for a particularnetwork node indicates that the particular network node has beencompromised, the routing table of the network may be updated to avoidsending traffic through the compromised node.

As described herein, verifiable evidence of device tampering (e.g.,canary stamps) may be appended to interactions based on existingcommunication protocols. This may give evidence receivers the option ofevaluating trustworthiness of the network device and reactingaccordingly. For example, the evidence receiver may determine that it nolonger trusts the network device and adjusts network policy to mitigatepossible damage or potential security threats. Dedicatedcrypto-processors such as a TPM may take necessary measurements toattest the identity of a device and its running binaries. Thesemeasurements may include detecting evidence which indicates that thedevice is in a known safe state. However, a receiver may need to certifythe evidence as fresh because, without a guarantee of freshness, anattacker may inject previously recorded measurements to make thereceiver to assert what is replayed as being current.

Traditional systems and methods may identify or detect the replaying ofold evidence via a nonce. For example, a nonce could be a random numberprovided by the entity making the request. This nonce may be passed intothe TPM which may generate results including a signature based on thenonce which could not have been generated without providing that nonce.However, the nonce-based method may rely on the transactionalchallenge/response interaction model. In other words, the nonce-basedmethod may not work with unidirectional communications originating fromthe attesting device. For example, a nonce may not work with anasynchronous push, multicast, broadcast messages, etc.

Particular embodiments of this disclosure may perform a unidirectionalattestation which is applicable to, for example, an asynchronous push,multicast, broadcast messages, etc., for the authentication of thecorresponding devices in conjunction with corresponding binaries.Particular embodiments may enable a communication platform to assesswhether the peer platforms are trustworthy. For example, the system mayperform a detection of invalid attestations that can triggeralarms/events reduction of network access from a suspect device or canbecome a part of Admission Control (e.g., IEEE 802.1X). Thecommunication platforms may be capable of supporting the unidirectionalattestation mechanism. As an alternative approach for attestingfreshness, particular embodiments of the system may generate a tokenwhich may allow external entities to validate freshness of asserted databased on the state of internal counters within the TPM. The token mayallow the replay attacks to be detected without a nonce and make itpossible for the attestation for asynchronous push, multicast,broadcast, etc. The token or signed measurement may be referred as acanary stamp since a token or signed measurement may provideauthenticity like a stamp and may be used as an indicator of an earlysign of trouble. Particular embodiments of the system may combine thetoken or signed measurement with TPM-integrated capabilities aimed atverifying that valid binary processes are running. The TPM-integratedcapabilities may include, for example, but are not limited to, trustedexecution environments (TEE) which may provide runtime malwareprotections and authenticated code modules (ACM) which may ensure thatonly digitally signed code modules can be loaded into a CPU. Particularembodiments of this disclosure may be implemented within a communicationplatform (e.g., a proprietary platform) or/and across multiplecommunication platforms (e.g., proprietary platforms and third-partyplatforms).

Particular embodiments of the system provide an advantageous technicalsolution for communication platforms to attest authenticity and allow acommon unidirectional attestation framework to be applied acrossexisting networking hardware as well as virtual routers. Particularembodiments of this disclosure may be applicable to, for example, butnot limited to, Cisco Secure Boot, Linux Integrity MeasurementArchitecture (IMA), Intel's Trusted Execution Technology (TXT), etc.,and may enable these platforms to validate that a processor is runningknown software with valid chain of binary signatures. Particularembodiments of the system may provide defining requirements for theplacement of different types of signed measurements (e.g., token orstamps) while allowing receivers to evaluate potential trustworthinessof attested information. Particular embodiments of the system maysupport controller-based evaluation of signed measurement (e.g., tokenor stamps) which includes subscription-based mechanisms to incrementallypush information/evidence to be verified or/and beachhead use cases andplatforms.

TPM functionality may be embedded in a wide variety of devices includingmobile phones, PCs, routers, etc. While traditional TPM methods mayenable a device to prove freshness in a replay to a response, thesemethods may not support unidirectional attestation. Particularembodiments of this disclosure may provide mechanisms for verifiableunidirectional attestation by creating and distributing a token. Thistoken may link counters on an attesting device with one or more globallyverifiable characteristics or parameters (e.g., a counter on acontroller, a RADIUS server, or a time authority). Upon its creation,the token may be distributed freely to any number ofreceivers/verifiers. Upon receiving the token, a receiver may acceptsubsequently attested information (e.g., stamps) from a remote TPM andattest asynchronous push, multicast, or broadcast communications of adevice. It is notable that, in this disclosure, the term “TPM” may beused as an umbrella term for the necessary functionality. The mechanismsdescribed may be supported by one or more proprietary hardware and otherhardware supporting the TPMv2 specification.

In particular embodiments, the system may create the initial token byextracting current counters from an attestee's TPM (e.g., either thelocal network element 120 or another network element 120), and hashingit with information from an external TPM. As a result, the system maygenerate a non-spoofable token which binds continuously incrementingcounters on an attestee with some known external state. In particularembodiments, any resetting of the TPM counters may be visible in anysubsequent TPM queries. Any restarting of platform may be exposed insubsequent TPM queries. Within these bounds of reset and restart, theTPM's counter time-tick may keep continuous increments. Therefore, thepush of attestee TPM information which includes these three counters maybe known to have occurred subsequently to any previously receivedmeasurement. On the other hand, if the reset and restart counters havenot changed, the incremental time since any previous measurement mayalso be known. In particular embodiments, the system may validate deviceinformation asserted from outside the TPM's program configurationregisters (PCR). The majority of information needing to be trusted bynetwork peers may not be contained within the TPM's PCR. Particularembodiments of the system may provide indirect methods of validatingthat a device has not been compromised based on the data or processes ofexiting systems or platforms.

Particular embodiments of the system may provide integration solutionswith both STO's integrity verification (IV) solution and, whereapplicable, integrity measurement architecture (IMA). The system mayprovide combination solutions that enable validating that acceptablebinaries are currently loaded on a peer communication system orplatform. Particular embodiments of the system may allow the receiver toreceive stamps and verify the information without supplementary evidencebeing sent with the stamp. For non-controller-based implementations, thesystem may not require that the verification steps occur on thereceiver.

A network may only be a secure as its weakest links. Information sentfrom a first device to a second device on the network may pass throughmultiple intermediary nodes or devices (e.g., routers, networkcontrollers, etc.) before it reaches the target device. It is vitallyimportant that said information, especially when it includes sensitivematerial, should not be sent through compromised network nodes (e.g.,hacked or captured nodes) to prevent leakage of or tampering with thesensitive information. However, as network size and complexity increase,the potential number of attack vectors for an attacker to exploit alsogrows. It may be difficult to determine with certainty whether eachindividual node through which an arbitrary piece of information may passis secured without having a dramatic effect on the performance of thenetwork. Moreover, if an attacker gains root access to a device (e.g.,via some previously undetected exploit), traditional protections andlink (e.g., in-transit) encryption may prove ineffectual at protectingany sensitive information.

Particular embodiments may apply attestation in the context of securitymanagement at a network-level to determine in real-time whether a nodein a network should be trusted. This disclosure introduces anasynchronous, unidirectional time-based variant of attestation that mayallow other nodes in a network to reliably ascertain if a source that isrouting information has been compromised. As previously discussed, thetoken used in this variant of attestation may be referred to as a“canary stamp” as it positively marks data as it transitions through thenetwork and can indicate on a front-line basis whether any securityproblems may exist within the network or within a given node.

In particular embodiments, a network element 120 may be configured tovalidate attestation 160 received from other network elements 120. Thereceiving network element 120 may be further configured to take actionbased on the status of the validation according to a specified policyprovided to the network node. As an example, network element 120 f mayvalidate a canary stamp received in a BGP signaling message 150 from aneighboring network element 120 a. The canary stamp may fail thevalidation and network element 120 f may determine to refuse toacknowledge the neighboring network element 120 a, as it has determinedthat it is not trustworthy (e.g., it may be executing unexpected orunsigned code, or it may otherwise show evidence of tampering). Networkelement 120 f may further advertise that it has determined that theneighboring network element 120 a is not trustworthy. This may reducethe likelihood of other nodes in the network sending sensitiveinformation to the untrustworthy neighboring network element 120 a.

In particular embodiments, a network element 120 such as network element120 f may compute a trust level for a network element 120 based on areceived attestation token. As an example and not by way of limitation,network element 120 f may set a maximum value to the trust level fornetwork element 120 a if it determined that the attestation token fornetwork element 120 a is valid at the current time. As another exampleand not by way of limitation, network element 120 f may set a minimumvalue to the trust level for network element 120 a if it determined thatthe attestation token for network element 120 a is not valid at thecurrent time. Although this disclosure describes computing a trust levelin a particular manner, this disclosure contemplates computing a trustlevel for a link in any suitable manner.

FIG. 4 illustrates an example method 400 for applying attestation toBGP. In some embodiments, method 400 may be performed by any apparatusof a BGP network such as network element 120. Method 400 may begin atstep 410 where an attestation token for the apparatus is received orotherwise accessed. In some embodiments, the attestation token may beattestation 160 as described herein. In some embodiments, theattestation token is generated by a crypto-processor of the apparatusand is accessed in step 410 from one or more memory devices of theapparatus.

At step 420, method 400 encodes the attestation token accessed in step410 in a BGP signaling message. In some embodiments, the BOP signalingmessage is a BOP keepalive message and step 420 includes appending theattestation token to the BGP keepalive message after a type field of theBGP keepalive message. In some embodiments, the BGP signaling message isa BGP update message and step 420 includes appending the attestationtoken to the BOP update message in an attribute field of the BGP updatemessage.

At step 430, method 400 sends the BGP signaling message with the encodedattestation token to second apparatus of the BGP network. The secondapparatus may be any appropriate BGP-enabled network element such as anexternal peer network element. After step 430, method 400 may end.

In some embodiments, a new BGP trust capability (i.e., capability forsupporting attestation 160) is negotiated in a BGP open message 150 aduring session establishment and prior to step 410 above. Based on localrouter policy, the BGP session may be terminated with a propernotification message if the trust capability is not properly received inan open message. If both peers negotiate the new BGP trust capabilityfor attestation 160, the attestation 160 provided by the trustedcomputing module of the local router may be appended to a BGP signalingmessage (e.g., a BGP periodic keepalive message 150 d) as described inmethod 400 above. As illustrated in FIG. 3B, the length of the keepalivemessages may be modified as 19 octets plus the length of attestation160.

In some embodiments, the new BOP trust capability is sent in an optionalcapability parameter of a BGP open message. In these embodiments, thecapability code of the open message may be assigned by LANA. In someembodiments, the capability length may be 1 octet.

In some embodiments, a new BGP trust attribute may be defined in orderto apply attestation to BGP. In general, BGP update messages 150 b carrypath attributes followed by a list prefixes sharing those attributes. Anew BGP attribute may be defined in order to carry canary stamps. Inthese embodiments, the type code may be assigned by IANA and the valueis a set of Type-Length-Value (LV) triplets. In a first example, arouter ID type for trusted peering may include a value that is therouter ID of the speaker followed by attestation 160. In this example, afirst router and a second router attest and validate the trustworthinessof updates by attaching canary stamps in all updates in the router IDTLV of the BGP trust attribute. In a second example, a next hop typeTLV/MP reach type TLV is used for a trusted next hop. In this example,the value is the router ID of the speaker updating the next hop followedby attestation 160. If a first router sets the next hop to itself, thefirst router updates the canary stamp in the next hop TLV of the BGPtrust attribute and a second router validates the canary stamp if ituses the next hop in forwarding. The second router does not update thecanary stamp of the next hop TLV if it is not modifying the next hop. Athird router executes the same procedure as the second router. In athird example, a cluster list type TLV is used for trusted reflection.In this example, the value is an ordered list (router IDs, canarystamp). The order matches the cluster list attribute prepend by variousspeakers during reflection.

In some embodiments, after step 430 above, the receiver of the BGPsignaling message transmitted in step 430 of method 400 (e.g., BGPperiodic keepalive message 150 d) may read the appended attestation 160based on the length and then validate the attestation 160 with itstrusted compute module in order to ascertain the trustworthiness of thepeer that transmitted the BOP signaling message. If the peer is found tobe compromised, then based on the local policy, the BGP session can beterminated with a proper notification message.

In some embodiments, method 400 may additionally include attaching,during a typical BGP update generation, the attestation 160 provided bythe trusted computing module of local router as a BGP trust attributeand advertising the attestation in a prefix advertisement. In theseembodiments, the receiving network element speaker may first recognizethe BGP trust attribute and then validate the attestation 160 with itstrusted computing module in order to ascertain the trustworthiness ofthe advertisements. In addition, the BGP best path selection may bemodified to prefer the trusted path and further advertisement to peers.

Particular embodiments may repeat one or more steps of the method ofFIG. 4, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 4 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 4 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates an example method for applyingattestation to BGP including the particular steps of the method of FIG.4, this disclosure contemplates any suitable method for applyingattestation to BGP including any suitable steps, which may include all,some, or none of the steps of the method of FIG. 4, where appropriate.Furthermore, although this disclosure describes and illustratesparticular components, devices, or systems carrying out particular stepsof the method of FIG. 4, this disclosure contemplates any suitablecombination of any suitable components, devices, or systems carrying outany suitable steps of the method of FIG. 4.

FIG. 5 illustrates an example computer system 500. In particularembodiments, one or more computer systems 500 perform one or more stepsof one or more methods described or illustrated herein. In particularembodiments, one or more computer systems 500 provide functionalitydescribed or illustrated herein. In particular embodiments, softwarerunning on one or more computer systems 500 performs one or more stepsof one or more methods described or illustrated herein or providesfunctionality described or illustrated herein. Particular embodimentsinclude one or more portions of one or more computer systems 500.Herein, reference to a computer system may encompass a computing device,and vice versa, where appropriate. Moreover, reference to a computersystem may encompass one or more computer systems, where appropriate.

This disclosure contemplates any suitable number of computer systems500. This disclosure contemplates computer system 500 taking anysuitable physical form. As example and not by way of limitation,computer system 500 may be an embedded computer system, a system-on-chip(SOC), a single-board computer system (SBC) (such as, for example, acomputer-on-module (COM) or system-on-module (SOM)), a desktop computersystem, a laptop or notebook computer system, an interactive kiosk, amainframe, a mesh of computer systems, a mobile telephone, a personaldigital assistant (PDA), a server, a tablet computer system, anaugmented/virtual reality device, or a combination of two or more ofthese. Where appropriate, computer system 500 may include one or morecomputer systems 500; be unitary or distributed; span multiplelocations; span multiple machines; span multiple data centers; or residein a cloud, which may include one or more cloud components in one ormore networks. Where appropriate, one or more computer systems 500 mayperform without substantial spatial or temporal limitation one or moresteps of one or more methods described or illustrated herein. As anexample and not by way of limitation, one or more computer systems 500may perform in real time or in batch mode one or more steps of one ormore methods described or illustrated herein. One or more computersystems 500 may perform at different times or at different locations oneor more steps of one or more methods described or illustrated herein,where appropriate.

In particular embodiments, computer system 500 includes a processor 502,memory 504, storage 506, an input/output (I/O) interface 508, acommunication interface 510, and a bus 512. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 502 includes hardware for executinginstructions, such as those making up a computer program. As an exampleand not by way of limitation, to execute instructions, processor 502 mayretrieve (or fetch) the instructions from an internal register, aninternal cache, memory 504, or storage 506; decode and execute them; andthen write one or more results to an internal register, an internalcache, memory 504, or storage 506. In particular embodiments, processor502 may include one or more internal caches for data, instructions, oraddresses. This disclosure contemplates processor 502 including anysuitable number of any suitable internal caches, where appropriate. Asan example and not by way of limitation, processor 502 may include oneor more instruction caches, one or more data caches, and one or moretranslation lookaside buffers (TLBs). Instructions in the instructioncaches may be copies of instructions in memory 504 or storage 506, andthe instruction caches may speed up retrieval of those instructions byprocessor 502. Data in the data caches may be copies of data in memory504 or storage 506 for instructions executing at processor 502 tooperate on; the results of previous instructions executed at processor502 for access by subsequent instructions executing at processor 502 orfor writing to memory 504 or storage 506; or other suitable data. Thedata caches may speed up read or write operations by processor 502. TheTLBs may speed up virtual-address translation for processor 502. Inparticular embodiments, processor 502 may include one or more internalregisters for data, instructions, or addresses. This disclosurecontemplates processor 502 including any suitable number of any suitableinternal registers, where appropriate. Where appropriate, processor 502may include one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 502. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

In particular embodiments, memory 504 includes main memory for storinginstructions for processor 502 to execute or data for processor 502 tooperate on. As an example and not by way of limitation, computer system500 may load instructions from storage 506 or another source (such as,for example, another computer system 500) to memory 504. Processor 502may then load the instructions from memory 504 to an internal registeror internal cache. To execute the instructions, processor 502 mayretrieve the instructions from the internal register or internal cacheand decode them. During or after execution of the instructions,processor 502 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor502 may then write one or more of those results to memory 504. Inparticular embodiments, processor 502 executes only instructions in oneor more internal registers or internal caches or in memory 504 (asopposed to storage 506 or elsewhere) and operates only on data in one ormore internal registers or internal caches or in memory 504 (as opposedto storage 506 or elsewhere). One or more memory buses (which may eachinclude an address bus and a data bus) may couple processor 502 tomemory 504. Bus 512 may include one or more memory buses, as describedbelow. In particular embodiments, one or more memory management units(MMUs) reside between processor 502 and memory 504 and facilitateaccesses to memory 504 requested by processor 502. In particularembodiments, memory 504 includes random access memory (RAM). This RAMmay be volatile memory, where appropriate. Where appropriate, this RAMmay be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, whereappropriate, this RAM may be single-ported or multi-ported RAM. Thisdisclosure contemplates any suitable RAM. Memory 504 may include one ormore memories 504, where appropriate. Although this disclosure describesand illustrates particular memory, this disclosure contemplates anysuitable memory.

In particular embodiments, storage 506 includes mass storage for data orinstructions. As an example and not by way of limitation, storage 506may include a had disk drive (HDD), a floppy disk drive, flash memory,an optical disc, a magneto-optical disc, magnetic tape, or a UniversalSerial Bus (USB) drive or a combination of two or more of these. Storage506 may include removable or non-removable (or fixed) media, whereappropriate. Storage 506 may be internal or external to computer system500, where appropriate. In particular embodiments, storage 506 isnon-volatile, solid-state memory. In particular embodiments, storage 506includes read-only memory (ROM). Where appropriate, this ROM may bemask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM),electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM),or flash memory or a combination of two or more of these. Thisdisclosure contemplates mass storage 506 taking any suitable physicalform. Storage 506 may include one or more storage control unitsfacilitating communication between processor 502 and storage 506, whereappropriate. Where appropriate, storage 506 may include one or morestorages 506. Although this disclosure describes and illustratesparticular storage, this disclosure contemplates any suitable storage.

In particular embodiments, I/O interface 508 includes hardware,software, or both, providing one or more interfaces for communicationbetween computer system 500 and one or more I/O devices. Computer system500 may include one or more of these I/O devices, where appropriate. Oneor more of these I/O devices may enable communication between a personand computer system 500. As an example and not by way of limitation, anI/O device may include a keyboard, keypad, microphone, monitor, mouse,printer, scanner, speaker, still camera, stylus, tablet, touch screen,trackball, video camera, another suitable I/O device or a combination oftwo or more of these I/O. An I/O device may include one or more sensors.This disclosure contemplates any suitable I/O devices and any suitableI/O interfaces 508 for them. Where appropriate, I/O interface 508 mayinclude one or more device or software drivers enabling processor 502 todrive one or more of these I/O devices. I/O interface 508 may includeone or more I/O interfaces 508, where appropriate. Although thisdisclosure describes and illustrates a particular I/O interface, thisdisclosure contemplates any suitable I/O interface.

In particular embodiments, communication interface 510 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 500 and one or more other computer systems 500 or one ormore networks. As an example and not by way of limitation, communicationinterface 510 may include a network interface controller (NIC) ornetwork adapter for communicating with an Ethernet or other wire-basednetwork or a wireless NIC (WNIC) or wireless adapter for communicatingwith a wireless network, such as a WI-FI network. This disclosurecontemplates any suitable network and any suitable communicationinterface 510 for it. As an example and not by way of limitation,computer system 500 may communicate with an ad hoc network, a personalarea network (PAN), a local area network (LAN), a wide area network(WAN), a metropolitan area network (MAN), or one or more portions of theInternet or a combination of two or more of these. One or more portionsof one or more of these networks may be wired or wireless. As anexample, computer system 500 may communicate with a wireless PAN(WPAN)(such as, for example, a BLUETOOTH (WPAN), a WI-FI network, aWI-MAX network, a cellular telephone network (such as, for example, aGlobal System for Mobile Communications (GSM) network, a Long-TermEvolution (LTE) network, or a 5G network), or other suitable wirelessnetwork or a combination of two or more of these. Computer system 500may include any suitable communication interface 510 for any of thesenetworks, where appropriate. Communication interface 510 may include oneor more communication interfaces 510, where appropriate. Although thisdisclosure describes and illustrates a particular communicationinterface, this disclosure contemplates any suitable communicationinterface.

In particular embodiments, bus 512 includes hardware, software, or bothcoupling components of computer system 500 to each other. As an exampleand not by way of limitation, bus 512 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PC) bus, aPCI-Express (PCIe) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 512may include one or more buses 512, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other integrated circuits(iCs) (such, as for example, field-programmable gate arrays (FPGAs) orapplication-specific iCs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HH-Ds), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs)RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,feature, functions, operations, or steps, any of these embodiments mayinclude any combination or permutation of any of the components,elements, features, functions, operations, or steps described orillustrated anywhere herein that a person having ordinary skill in theart would comprehend. Furthermore, reference in the appended claims toan apparatus or system or a component of an apparatus or system beingadapted to, arranged to, capable of, configured to, enabled to, operableto, or operative to perform a particular function encompasses thatapparatus, system, component, whether or not it or that particularfunction is activated, turned on, or unlocked, as long as thatapparatus, system, or component is so adapted, arranged, capable,configured, enabled, operable, or operative. Additionally, although thisdisclosure describes or illustrates particular embodiments as providingparticular advantages, particular embodiments may provide none, some, orall of these advantages.

1. An apparatus of a Border Gateway Protocol (BGP) network, theapparatus comprising: one or more processors; and one or morecomputer-readable non-transitory storage media coupled to the one ormore processors and comprising instructions operable when executed bythe one or more processors to cause the one or more processors toperform operations comprising: accessing an attestation token for theapparatus; encoding the attestation token in a BGP signaling message;and sending the BGP signaling message with the encoded attestation tokento a second apparatus of the BGP network.
 2. The apparatus of claim 1,wherein the apparatus of the BGP network comprises a router.
 3. Theapparatus of claim 1, wherein the attestation token is generated by acrypto-processor of the apparatus.
 4. The apparatus of claim 1, whereinthe BGP signaling message comprises a BGP keepalive message.
 5. Theapparatus of claim 1, wherein encoding the attestation token in the BGPsignaling message comprises appending the attestation token to the BOPkeepalive message after a type field of the BGP keepalive message. 6.The apparatus of claim 1, wherein the BOP signaling message comprises aBGP update message.
 7. The apparatus of claim 6, wherein encoding theattestation token in the BOP signaling message comprises appending theattestation token to the BGP update message in an attribute field of theBGP update message.
 8. A method by an apparatus of a Border GatewayProtocol (BGP) network, the method comprising: accessing an attestationtoken for the apparatus; encoding the attestation token in a BGPsignaling message; and sending the BOP signaling message with theencoded attestation token to a second apparatus of the BGP network. 9.The method of claim 8, wherein the apparatus of the BOP networkcomprises a router.
 10. The method of claim 8, wherein the attestationtoken is generated by a crypto-processor of the apparatus.
 11. Themethod of claim 8, wherein the BGP signaling message comprises a BGPkeepalive message.
 12. The method of claim 11, wherein encoding theattestation token in the BGP signaling message comprises appending theattestation token to the BGP keepalive message after a type field of theBGP keepalive message.
 13. The method of claim 8, wherein the BGPsignaling message comprises a BOP update message.
 14. The method ofclaim 13, wherein encoding the attestation token in the BGP signalingmessage comprises appending the attestation token to the BOP updatemessage in an attribute field of the BGP update message.
 15. One or morecomputer-readable non-transitory storage media embodying software thatis operable when executed to: access an attestation token for theapparatus; encode the attestation token in a BGP signaling message; andsend the BGP signaling message with the encoded attestation token to asecond apparatus of the BGP network.
 16. The one or morecomputer-readable non-transitory storage media of claim 15, wherein theattestation token is generated by a crypto-processor of the apparatus.17. The one or more computer-readable non-transitory storage media ofclaim 15, wherein the BGP signaling message comprises a BGP keepalivemessage.
 18. The one or more computer-readable non-transitory storagemedia of claim 17, wherein encoding the attestation token in the BGPsignaling message comprises appending the attestation token to the BGPkeepalive message after a type field of the BGP keepalive message. 19.The one or more computer-readable non-transitory storage media of claim15, wherein the BGP signaling message comprises a BGP update message.20. The one or more computer-readable non-transitory storage media ofclaim 19, wherein encoding the attestation token in the BGP signalingmessage comprises appending the attestation token to the BGP updatemessage in an attribute field of the BGP update message.